<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>
<HEAD>
   <TITLE>class  SG_EXPORT osg::Matrix</TITLE>
   <META NAME="GENERATOR" CONTENT="DOC++ 3.4.8">
</HEAD>
<BODY BGCOLOR="#ffffff">

<H2>class  SG_EXPORT <A HREF="#DOC.DOCU">osg::Matrix</A></H2></H2><HR>

<H2>Inheritance:</H2>
<APPLET CODE="ClassGraph.class" WIDTH=600 HEIGHT=95>
<param name=classes value="CReferenced,MReferenced.html,CObject,MObject.html,CMatrix,MMatrix.html">
<param name=before value="M,M,M">
<param name=after value="Md_SP,Md_,M">
<param name=indent value="0,1,2">
<param name=arrowdir value="down">
</APPLET>
<HR>

<DL>
<P><DL>
<DT><H3>Public Methods</H3><DD><DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif> <B><A HREF="#DOC.2.70.1">Matrix</A></B>()
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif> <B><A HREF="#DOC.2.70.2">Matrix</A></B>( const <!1><A HREF="Matrix.html#DOC.2.70.2">Matrix</A>&amp; other)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>explicit <B><A HREF="#DOC.2.70.3">Matrix</A></B>( float const*  const def )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif> <B><A HREF="#DOC.2.70.4">Matrix</A></B>( float a00, float a01, float a02, float a03, float a10, float a11, float a12, float a13, float a20, float a21, float a22, float a23, float a30, float a31, float a32, float a33)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual   <!1><A HREF="Object.html">Object</A>* <B><A HREF="#DOC.2.70.5">cloneType</A></B>() const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual   <!1><A HREF="Object.html">Object</A>* <B><A HREF="#DOC.2.70.6">clone</A></B>(const <!1><A HREF="CopyOp.html">CopyOp</A>&amp;) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual   bool <B><A HREF="#DOC.2.70.7">isSameKindAs</A></B>(const <!1><A HREF="Object.html">Object</A>* obj) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual   const char* <B><A HREF="#DOC.2.70.8">libraryName</A></B>() const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual   const char* <B><A HREF="#DOC.2.70.9">className</A></B>() const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual   <B><A HREF="#DOC.2.70.10">~Matrix</A></B>()
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>int <B><A HREF="#DOC.2.70.11">compare</A></B>(const <!1><A HREF="Matrix.html">Matrix</A>&amp; m) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>bool <B><A HREF="#DOC.2.70.12">operator < </A></B>(const <!1><A HREF="Matrix.html">Matrix</A>&amp; m) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>bool <B><A HREF="#DOC.2.70.13">operator == </A></B>(const <!1><A HREF="Matrix.html">Matrix</A>&amp; m) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>bool <B><A HREF="#DOC.2.70.14">operator != </A></B>(const <!1><A HREF="Matrix.html">Matrix</A>&amp; m) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   float&amp; <B><A HREF="#DOC.2.70.15">operator()</A></B>(int row, int col)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   float <B><A HREF="#DOC.2.70.16">operator()</A></B>(int row, int col) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   const bool <B><A HREF="#DOC.2.70.17">valid</A></B>() const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   const bool <B><A HREF="#DOC.2.70.18">isNaN</A></B>() const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A>&amp; <B><A HREF="#DOC.2.70.19">operator = </A></B>(const <!1><A HREF="Matrix.html">Matrix</A>&amp; other)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   void <B><A HREF="#DOC.2.70.20">set</A></B>(const <!1><A HREF="Matrix.html">Matrix</A>&amp; other)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   void <B><A HREF="#DOC.2.70.21">set</A></B>(float const*  const <!1><A HREF="Matrix.html#DOC.2.70.23">ptr</A>)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.22">set</A></B>( float a00, float a01, float a02, float a03, float a10, float a11, float a12, float a13, float a20, float a21, float a22, float a23, float a30, float a31, float a32, float a33)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>float* <B><A HREF="#DOC.2.70.23">ptr</A></B>()
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>const float* <B><A HREF="#DOC.2.70.24">ptr</A></B>() const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.25">makeIdentity</A></B>()
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.26">makeScale</A></B>( const <!1><A HREF="Vec3.html">Vec3</A>&amp; )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.27">makeScale</A></B>( float, float, float )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.28">makeTranslate</A></B>( const <!1><A HREF="Vec3.html">Vec3</A>&amp; )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.29">makeTranslate</A></B>( float, float, float )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.30">makeRotate</A></B>( const <!1><A HREF="Vec3.html">Vec3</A>&amp; from, const <!1><A HREF="Vec3.html">Vec3</A>&amp; to )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.31">makeRotate</A></B>( float angle, const <!1><A HREF="Vec3.html">Vec3</A>&amp; axis )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.32">makeRotate</A></B>( float angle, float <!1><A HREF="Viewport.html#DOC.2.140.7">x</A>, float <!1><A HREF="Viewport.html#DOC.2.140.8">y</A>, float <!1><A HREF="Vec4.html#DOC.2.137.15">z</A> )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.33">makeRotate</A></B>( const <!1><A HREF="Quat.html">Quat</A>&amp; )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.34">makeRotate</A></B>( float heading, float pitch, float roll)
<DD><I>make a rotation Matrix from euler angles.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.35">makeOrtho</A></B>(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)
<DD><I>Set to a orthographic projection.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   void <B><A HREF="#DOC.2.70.36">makeOrtho2D</A></B>(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>)
<DD><I>Set to a 2D orthographic projection.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.37">makeFrustum</A></B>(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)
<DD><I>Set to a perspective projection.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.38">makePerspective</A></B>(const double fovy, const double <!1><A HREF="Viewport.html#DOC.2.140.12">aspectRatio</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)
<DD><I>Set to a symmetrical perspective projection, See gluPerspective for further details.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.39">makeLookAt</A></B>(const <!1><A HREF="Vec3.html">Vec3</A>&amp; eye, const <!1><A HREF="Vec3.html">Vec3</A>&amp; <!1><A HREF="ConvexPlanerPolygon.html#DOC.2.32.3">center</A>, const <!1><A HREF="Vec3.html">Vec3</A>&amp; up)
<DD><I>Set to the position and orientation as per a camera, using the same convention as gluLookAt.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>bool <B><A HREF="#DOC.2.70.40">invert</A></B>( const <!1><A HREF="Matrix.html">Matrix</A>&amp; )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.41">identity</A></B>( void )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.42">scale</A></B>( const <!1><A HREF="Vec3.html">Vec3</A>&amp; sv)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.43">scale</A></B>( float sx, float sy, float sz)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.44">translate</A></B>( const <!1><A HREF="Vec3.html">Vec3</A>&amp; dv)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.45">translate</A></B>( float <!1><A HREF="Viewport.html#DOC.2.140.7">x</A>, float <!1><A HREF="Viewport.html#DOC.2.140.8">y</A>, float <!1><A HREF="Vec4.html#DOC.2.137.15">z</A>)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.46">rotate</A></B>( const <!1><A HREF="Vec3.html">Vec3</A>&amp; from, const <!1><A HREF="Vec3.html">Vec3</A>&amp; to)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.47">rotate</A></B>( float angle, float <!1><A HREF="Viewport.html#DOC.2.140.7">x</A>, float <!1><A HREF="Viewport.html#DOC.2.140.8">y</A>, float <!1><A HREF="Vec4.html#DOC.2.137.15">z</A>)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.48">rotate</A></B>( float angle, const <!1><A HREF="Vec3.html">Vec3</A>&amp; axis)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.49">rotate</A></B>( float heading, float pitch, float roll)
<DD><I>construct rotation matrix from euler angles, for conventions see makeRotate()</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.50">rotate</A></B>( const <!1><A HREF="Quat.html">Quat</A>&amp; quat)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.51">inverse</A></B>( const <!1><A HREF="Matrix.html">Matrix</A>&amp; matrix)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.52">ortho</A></B>(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)
<DD><I>Create a orthographic projection.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.53">ortho2D</A></B>(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>)
<DD><I>Create a 2D orthographic projection.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.54">frustum</A></B>(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)
<DD><I>Create a perspective projection.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.55">perspective</A></B>(const double fovy, const double <!1><A HREF="Viewport.html#DOC.2.140.12">aspectRatio</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)
<DD><I>Create a symmetrical perspective projection, See gluPerspective for further details.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.56">lookAt</A></B>(const <!1><A HREF="Vec3.html">Vec3</A>&amp; eye, const <!1><A HREF="Vec3.html">Vec3</A>&amp; <!1><A HREF="ConvexPlanerPolygon.html#DOC.2.32.3">center</A>, const <!1><A HREF="Vec3.html">Vec3</A>&amp; up)
<DD><I>Create the position and orientation as per a camera, using the same convention as gluLookAt.</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.57">setTrans</A></B>( float tx, float ty, float tz )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.58">setTrans</A></B>( const <!1><A HREF="Vec3.html">Vec3</A>&amp; v )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Vec3.html">Vec3</A> <B><A HREF="#DOC.2.70.59">getTrans</A></B>() const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Vec3.html">Vec3</A> <B><A HREF="#DOC.2.70.60">getScale</A></B>() const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Vec3.html">Vec3</A> <B><A HREF="#DOC.2.70.61">transform3x3</A></B>(const <!1><A HREF="Vec3.html">Vec3</A>&amp; v, const <!1><A HREF="Matrix.html">Matrix</A>&amp; m)
<DD><I>apply apply an 3x3 transform of v*M[02,02]  </I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline static   <!1><A HREF="Vec3.html">Vec3</A> <B><A HREF="#DOC.2.70.62">transform3x3</A></B>(const <!1><A HREF="Matrix.html">Matrix</A>&amp; m, const <!1><A HREF="Vec3.html">Vec3</A>&amp; v)
<DD><I>apply apply an 3x3 transform of M[02,02]*v  </I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.63">mult</A></B>( const <!1><A HREF="Matrix.html">Matrix</A>&amp;, const <!1><A HREF="Matrix.html">Matrix</A>&amp; )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.64">preMult</A></B>( const <!1><A HREF="Matrix.html">Matrix</A>&amp; )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.70.65">postMult</A></B>( const <!1><A HREF="Matrix.html">Matrix</A>&amp; )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   void <B><A HREF="#DOC.2.70.66">operator *= </A></B>( const <!1><A HREF="Matrix.html">Matrix</A>&amp; other )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.67">operator * </A></B>( const <!1><A HREF="Matrix.html">Matrix</A> &amp;m ) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.69">identity</A></B>(void)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.70">scale</A></B>(float sx, float sy, float sz)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.71">scale</A></B>(const <!1><A HREF="Vec3.html">Vec3</A>&amp; v )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.72">translate</A></B>(float tx, float ty, float tz)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.73">translate</A></B>(const <!1><A HREF="Vec3.html">Vec3</A>&amp; v )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.74">rotate</A></B>( const <!1><A HREF="Quat.html">Quat</A>&amp; q )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.75">rotate</A></B>(float angle, float <!1><A HREF="Viewport.html#DOC.2.140.7">x</A>, float <!1><A HREF="Viewport.html#DOC.2.140.8">y</A>, float <!1><A HREF="Vec4.html#DOC.2.137.15">z</A> )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.76">rotate</A></B>(float angle, const <!1><A HREF="Vec3.html">Vec3</A>&amp; axis )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.77">rotate</A></B>(float heading, float pitch, float roll)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.78">rotate</A></B>(const <!1><A HREF="Vec3.html">Vec3</A>&amp; from, const <!1><A HREF="Vec3.html">Vec3</A>&amp; to )
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.79">inverse</A></B>( const <!1><A HREF="Matrix.html">Matrix</A>&amp; matrix)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.80">ortho</A></B>(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.81">ortho2D</A></B>(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.82">frustum</A></B>(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.83">perspective</A></B>(const double fovy, const double <!1><A HREF="Viewport.html#DOC.2.140.12">aspectRatio</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Matrix.html">Matrix</A> <B><A HREF="#DOC.2.70.84">lookAt</A></B>(const <!1><A HREF="Vec3.html">Vec3</A>&amp; eye, const <!1><A HREF="Vec3.html">Vec3</A>&amp; <!1><A HREF="ConvexPlanerPolygon.html#DOC.2.32.3">center</A>, const <!1><A HREF="Vec3.html">Vec3</A>&amp; up)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Vec3.html">Vec3</A> <B><A HREF="#DOC.2.70.85">postMult</A></B>( const <!1><A HREF="Vec3.html">Vec3</A>&amp; v ) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Vec3.html">Vec3</A> <B><A HREF="#DOC.2.70.86">preMult</A></B>( const <!1><A HREF="Vec3.html">Vec3</A>&amp; v ) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Vec4.html">Vec4</A> <B><A HREF="#DOC.2.70.87">postMult</A></B>( const <!1><A HREF="Vec4.html">Vec4</A>&amp; v ) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Vec4.html">Vec4</A> <B><A HREF="#DOC.2.70.88">preMult</A></B>( const <!1><A HREF="Vec4.html">Vec4</A>&amp; v ) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Vec3.html">Vec3</A> <B><A HREF="#DOC.2.70.89">transform3x3</A></B>(const <!1><A HREF="Vec3.html">Vec3</A>&amp; v, const <!1><A HREF="Matrix.html">Matrix</A>&amp; m)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Vec3.html">Vec3</A> <B><A HREF="#DOC.2.70.90">transform3x3</A></B>(const <!1><A HREF="Matrix.html">Matrix</A>&amp; m, const <!1><A HREF="Vec3.html">Vec3</A>&amp; v)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Vec3.html">Vec3</A> <B><A HREF="#DOC.2.70.91">operator* </A></B>(const <!1><A HREF="Vec3.html">Vec3</A>&amp; v) const 
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>inline   <!1><A HREF="Vec4.html">Vec4</A> <B><A HREF="#DOC.2.70.92">operator* </A></B>(const <!1><A HREF="Vec4.html">Vec4</A>&amp; v) const 
</DL></P>

</DL>
<HR><H3>Inherited from <A HREF="Object.html">Object</A>:</H3>
<DL>
<P><DL>
<DT><H3>Public Methods</H3><DD><DT>
<IMG ALT="o" SRC=icon2.gif>inline   void <B>setDataVariance</B>(const <!1><A HREF="Object.html#DOC.2.87.8">DataVariance</A> dv)
<DT>
<IMG ALT="o" SRC=icon2.gif>inline   const <!1><A HREF="Object.html#DOC.2.87.8">DataVariance</A> <B>getDataVariance</B>() const 
<DT>
<IMG ALT="o" SRC=icon2.gif>inline   void <B>setUserData</B>(<!1><A HREF="Referenced.html">Referenced</A>* obj)
<DT>
<IMG ALT="o" SRC=icon2.gif>inline   <!1><A HREF="Referenced.html">Referenced</A>* <B>getUserData</B>()
<DT>
<IMG ALT="o" SRC=icon2.gif>inline   const <!1><A HREF="Referenced.html">Referenced</A>* <B>getUserData</B>() const 
</DL></P>

<P><DL>
<DT><H3>Public Members</H3><DD><DT>
<IMG ALT="o" SRC=icon2.gif>enum  <B>DataVariance</B>
</DL></P>

<P><DL>
<DT><H3>Protected Fields</H3><DD><DT>
<IMG ALT="o" SRC=icon2.gif><!1><A HREF="Object.html#DOC.2.87.8">DataVariance</A> <B>_dataVariance</B>
<DT>
<IMG ALT="o" SRC=icon2.gif><!1><A HREF="ref_ptr.html">ref_ptr</A>&lt;<!1><A HREF="Referenced.html">Referenced</A>&gt;  <B>_userData</B>
</DL></P>

</DL>
<HR><H3>Inherited from <A HREF="Referenced.html">Referenced</A>:</H3>
<DL>
<P><DL>
<DT><H3>Public Methods</H3><DD><DT>
<IMG ALT="o" SRC=icon2.gif>inline   void <B>ref</B>() const 
<DT>
<IMG ALT="o" SRC=icon2.gif>inline   void <B>unref</B>() const 
<DT>
<IMG ALT="o" SRC=icon2.gif>inline   void <B>unref_nodelete</B>() const 
<DT>
<IMG ALT="o" SRC=icon2.gif>inline   const int <B>referenceCount</B>() const 
</DL></P>

<P><DL>
<DT><H3>Protected Fields</H3><DD><DT>
<IMG ALT="o" SRC=icon2.gif>mutable int <B>_refCount</B>
</DL></P>

</DL>

<A NAME="DOC.DOCU"></A>
<HR>
<H2>Documentation</H2>
<DL>

<A NAME="Matrix"></A>
<A NAME="DOC.2.70.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Matrix()</B></TT>
<DL><DT><DD></DL><P>
<A NAME="Matrix"></A>
<A NAME="DOC.2.70.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Matrix( const <!1><A HREF="Matrix.html#DOC.2.70.2">Matrix</A>&amp; other)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="Matrix"></A>
<A NAME="DOC.2.70.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>explicit Matrix( float const*  const def )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="Matrix"></A>
<A NAME="DOC.2.70.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Matrix( float a00, float a01, float a02, float a03, float a10, float a11, float a12, float a13, float a20, float a21, float a22, float a23, float a30, float a31, float a32, float a33)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="cloneType"></A>
<A NAME="DOC.2.70.5"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual   <!1><A HREF="Object.html">Object</A>* cloneType() const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="clone"></A>
<A NAME="DOC.2.70.6"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual   <!1><A HREF="Object.html">Object</A>* clone(const <!1><A HREF="CopyOp.html">CopyOp</A>&amp;) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="isSameKindAs"></A>
<A NAME="DOC.2.70.7"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual   bool isSameKindAs(const <!1><A HREF="Object.html">Object</A>* obj) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="libraryName"></A>
<A NAME="DOC.2.70.8"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual   const char* libraryName() const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="className"></A>
<A NAME="DOC.2.70.9"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual   const char* className() const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="~Matrix"></A>
<A NAME="DOC.2.70.10"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual   ~Matrix()</B></TT>
<DL><DT><DD></DL><P>
<A NAME="compare"></A>
<A NAME="DOC.2.70.11"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int compare(const <!1><A HREF="Matrix.html">Matrix</A>&amp; m) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="operator < "></A>
<A NAME="DOC.2.70.12"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>bool operator < (const <!1><A HREF="Matrix.html">Matrix</A>&amp; m) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="operator == "></A>
<A NAME="DOC.2.70.13"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>bool operator == (const <!1><A HREF="Matrix.html">Matrix</A>&amp; m) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="operator != "></A>
<A NAME="DOC.2.70.14"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>bool operator != (const <!1><A HREF="Matrix.html">Matrix</A>&amp; m) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="operator()"></A>
<A NAME="DOC.2.70.15"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   float&amp; operator()(int row, int col)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="operator()"></A>
<A NAME="DOC.2.70.16"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   float operator()(int row, int col) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="valid"></A>
<A NAME="DOC.2.70.17"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   const bool valid() const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="isNaN"></A>
<A NAME="DOC.2.70.18"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   const bool isNaN() const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="operator = "></A>
<A NAME="DOC.2.70.19"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A>&amp; operator = (const <!1><A HREF="Matrix.html">Matrix</A>&amp; other)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="set"></A>
<A NAME="DOC.2.70.20"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   void set(const <!1><A HREF="Matrix.html">Matrix</A>&amp; other)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="set"></A>
<A NAME="DOC.2.70.21"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   void set(float const*  const <!1><A HREF="Matrix.html#DOC.2.70.23">ptr</A>)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="set"></A>
<A NAME="DOC.2.70.22"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void set( float a00, float a01, float a02, float a03, float a10, float a11, float a12, float a13, float a20, float a21, float a22, float a23, float a30, float a31, float a32, float a33)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="ptr"></A>
<A NAME="DOC.2.70.23"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float* ptr()</B></TT>
<DL><DT><DD></DL><P>
<A NAME="ptr"></A>
<A NAME="DOC.2.70.24"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>const float* ptr() const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="makeIdentity"></A>
<A NAME="DOC.2.70.25"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeIdentity()</B></TT>
<DL><DT><DD></DL><P>
<A NAME="makeScale"></A>
<A NAME="DOC.2.70.26"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeScale( const <!1><A HREF="Vec3.html">Vec3</A>&amp; )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="makeScale"></A>
<A NAME="DOC.2.70.27"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeScale( float, float, float )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="makeTranslate"></A>
<A NAME="DOC.2.70.28"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeTranslate( const <!1><A HREF="Vec3.html">Vec3</A>&amp; )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="makeTranslate"></A>
<A NAME="DOC.2.70.29"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeTranslate( float, float, float )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="makeRotate"></A>
<A NAME="DOC.2.70.30"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeRotate( const <!1><A HREF="Vec3.html">Vec3</A>&amp; from, const <!1><A HREF="Vec3.html">Vec3</A>&amp; to )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="makeRotate"></A>
<A NAME="DOC.2.70.31"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeRotate( float angle, const <!1><A HREF="Vec3.html">Vec3</A>&amp; axis )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="makeRotate"></A>
<A NAME="DOC.2.70.32"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeRotate( float angle, float <!1><A HREF="Viewport.html#DOC.2.140.7">x</A>, float <!1><A HREF="Viewport.html#DOC.2.140.8">y</A>, float <!1><A HREF="Vec4.html#DOC.2.137.15">z</A> )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="makeRotate"></A>
<A NAME="DOC.2.70.33"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeRotate( const <!1><A HREF="Quat.html">Quat</A>&amp; )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="makeRotate"></A>
<A NAME="DOC.2.70.34"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeRotate( float heading, float pitch, float roll)</B></TT>
<DD>make a rotation Matrix from euler angles.
assume Z up, Y north, X east and euler convention
as per Open Flight & Performer.
Applies a positive rotation about Y axis for roll,
then applies a positive roation about X for pitch,
and finally a negative rotation about the Z axis.
<DL><DT><DD></DL><P>
<A NAME="makeOrtho"></A>
<A NAME="DOC.2.70.35"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeOrtho(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)</B></TT>
<DD>Set to a orthographic projection. See glOrtho for further details.
<DL><DT><DD></DL><P>
<A NAME="makeOrtho2D"></A>
<A NAME="DOC.2.70.36"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   void makeOrtho2D(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>)</B></TT>
<DD>Set to a 2D orthographic projection. See glOrtho2D for further details.
<DL><DT><DD></DL><P>
<A NAME="makeFrustum"></A>
<A NAME="DOC.2.70.37"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeFrustum(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)</B></TT>
<DD>Set to a perspective projection. See glFrustum for further details.
<DL><DT><DD></DL><P>
<A NAME="makePerspective"></A>
<A NAME="DOC.2.70.38"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makePerspective(const double fovy, const double <!1><A HREF="Viewport.html#DOC.2.140.12">aspectRatio</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)</B></TT>
<DD>Set to a symmetrical perspective projection, See gluPerspective for further details.
Aspect ratio is defined as width/height.
<DL><DT><DD></DL><P>
<A NAME="makeLookAt"></A>
<A NAME="DOC.2.70.39"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void makeLookAt(const <!1><A HREF="Vec3.html">Vec3</A>&amp; eye, const <!1><A HREF="Vec3.html">Vec3</A>&amp; <!1><A HREF="ConvexPlanerPolygon.html#DOC.2.32.3">center</A>, const <!1><A HREF="Vec3.html">Vec3</A>&amp; up)</B></TT>
<DD>Set to the position and orientation as per a camera, using the same convention as gluLookAt. 
<DL><DT><DD></DL><P>
<A NAME="invert"></A>
<A NAME="DOC.2.70.40"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>bool invert( const <!1><A HREF="Matrix.html">Matrix</A>&amp; )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="identity"></A>
<A NAME="DOC.2.70.41"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> identity( void )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="scale"></A>
<A NAME="DOC.2.70.42"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> scale( const <!1><A HREF="Vec3.html">Vec3</A>&amp; sv)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="scale"></A>
<A NAME="DOC.2.70.43"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> scale( float sx, float sy, float sz)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="translate"></A>
<A NAME="DOC.2.70.44"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> translate( const <!1><A HREF="Vec3.html">Vec3</A>&amp; dv)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="translate"></A>
<A NAME="DOC.2.70.45"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> translate( float <!1><A HREF="Viewport.html#DOC.2.140.7">x</A>, float <!1><A HREF="Viewport.html#DOC.2.140.8">y</A>, float <!1><A HREF="Vec4.html#DOC.2.137.15">z</A>)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="rotate"></A>
<A NAME="DOC.2.70.46"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> rotate( const <!1><A HREF="Vec3.html">Vec3</A>&amp; from, const <!1><A HREF="Vec3.html">Vec3</A>&amp; to)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="rotate"></A>
<A NAME="DOC.2.70.47"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> rotate( float angle, float <!1><A HREF="Viewport.html#DOC.2.140.7">x</A>, float <!1><A HREF="Viewport.html#DOC.2.140.8">y</A>, float <!1><A HREF="Vec4.html#DOC.2.137.15">z</A>)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="rotate"></A>
<A NAME="DOC.2.70.48"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> rotate( float angle, const <!1><A HREF="Vec3.html">Vec3</A>&amp; axis)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="rotate"></A>
<A NAME="DOC.2.70.49"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> rotate( float heading, float pitch, float roll)</B></TT>
<DD>construct rotation matrix from euler angles, for conventions see makeRotate()
<DL><DT><DD></DL><P>
<A NAME="rotate"></A>
<A NAME="DOC.2.70.50"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> rotate( const <!1><A HREF="Quat.html">Quat</A>&amp; quat)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="inverse"></A>
<A NAME="DOC.2.70.51"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> inverse( const <!1><A HREF="Matrix.html">Matrix</A>&amp; matrix)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="ortho"></A>
<A NAME="DOC.2.70.52"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> ortho(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)</B></TT>
<DD>Create a orthographic projection. See glOrtho for further details.
<DL><DT><DD></DL><P>
<A NAME="ortho2D"></A>
<A NAME="DOC.2.70.53"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> ortho2D(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>)</B></TT>
<DD>Create a 2D orthographic projection. See glOrtho for further details.
<DL><DT><DD></DL><P>
<A NAME="frustum"></A>
<A NAME="DOC.2.70.54"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> frustum(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)</B></TT>
<DD>Create a perspective projection. See glFrustum for further details.
<DL><DT><DD></DL><P>
<A NAME="perspective"></A>
<A NAME="DOC.2.70.55"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> perspective(const double fovy, const double <!1><A HREF="Viewport.html#DOC.2.140.12">aspectRatio</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)</B></TT>
<DD>Create a symmetrical perspective projection, See gluPerspective for further details.
Aspect ratio is defined as width/height.
<DL><DT><DD></DL><P>
<A NAME="lookAt"></A>
<A NAME="DOC.2.70.56"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Matrix.html">Matrix</A> lookAt(const <!1><A HREF="Vec3.html">Vec3</A>&amp; eye, const <!1><A HREF="Vec3.html">Vec3</A>&amp; <!1><A HREF="ConvexPlanerPolygon.html#DOC.2.32.3">center</A>, const <!1><A HREF="Vec3.html">Vec3</A>&amp; up)</B></TT>
<DD>Create the position and orientation as per a camera, using the same convention as gluLookAt. 
<DL><DT><DD></DL><P>
<A NAME="setTrans"></A>
<A NAME="DOC.2.70.57"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void setTrans( float tx, float ty, float tz )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="setTrans"></A>
<A NAME="DOC.2.70.58"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void setTrans( const <!1><A HREF="Vec3.html">Vec3</A>&amp; v )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="getTrans"></A>
<A NAME="DOC.2.70.59"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Vec3.html">Vec3</A> getTrans() const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="getScale"></A>
<A NAME="DOC.2.70.60"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Vec3.html">Vec3</A> getScale() const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="transform3x3"></A>
<A NAME="DOC.2.70.61"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Vec3.html">Vec3</A> transform3x3(const <!1><A HREF="Vec3.html">Vec3</A>&amp; v, const <!1><A HREF="Matrix.html">Matrix</A>&amp; m)</B></TT>
<DD>apply apply an 3x3 transform of v*M[02,02]  
<DL><DT><DD></DL><P>
<A NAME="transform3x3"></A>
<A NAME="DOC.2.70.62"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline static   <!1><A HREF="Vec3.html">Vec3</A> transform3x3(const <!1><A HREF="Matrix.html">Matrix</A>&amp; m, const <!1><A HREF="Vec3.html">Vec3</A>&amp; v)</B></TT>
<DD>apply apply an 3x3 transform of M[02,02]*v  
<DL><DT><DD></DL><P>
<A NAME="mult"></A>
<A NAME="DOC.2.70.63"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void mult( const <!1><A HREF="Matrix.html">Matrix</A>&amp;, const <!1><A HREF="Matrix.html">Matrix</A>&amp; )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="preMult"></A>
<A NAME="DOC.2.70.64"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void preMult( const <!1><A HREF="Matrix.html">Matrix</A>&amp; )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="postMult"></A>
<A NAME="DOC.2.70.65"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void postMult( const <!1><A HREF="Matrix.html">Matrix</A>&amp; )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="operator *= "></A>
<A NAME="DOC.2.70.66"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   void operator *= ( const <!1><A HREF="Matrix.html">Matrix</A>&amp; other )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="operator * "></A>
<A NAME="DOC.2.70.67"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> operator * ( const <!1><A HREF="Matrix.html">Matrix</A> &amp;m ) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="identity"></A>
<A NAME="DOC.2.70.69"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> identity(void)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="scale"></A>
<A NAME="DOC.2.70.70"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> scale(float sx, float sy, float sz)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="scale"></A>
<A NAME="DOC.2.70.71"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> scale(const <!1><A HREF="Vec3.html">Vec3</A>&amp; v )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="translate"></A>
<A NAME="DOC.2.70.72"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> translate(float tx, float ty, float tz)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="translate"></A>
<A NAME="DOC.2.70.73"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> translate(const <!1><A HREF="Vec3.html">Vec3</A>&amp; v )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="rotate"></A>
<A NAME="DOC.2.70.74"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> rotate( const <!1><A HREF="Quat.html">Quat</A>&amp; q )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="rotate"></A>
<A NAME="DOC.2.70.75"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> rotate(float angle, float <!1><A HREF="Viewport.html#DOC.2.140.7">x</A>, float <!1><A HREF="Viewport.html#DOC.2.140.8">y</A>, float <!1><A HREF="Vec4.html#DOC.2.137.15">z</A> )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="rotate"></A>
<A NAME="DOC.2.70.76"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> rotate(float angle, const <!1><A HREF="Vec3.html">Vec3</A>&amp; axis )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="rotate"></A>
<A NAME="DOC.2.70.77"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> rotate(float heading, float pitch, float roll)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="rotate"></A>
<A NAME="DOC.2.70.78"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> rotate(const <!1><A HREF="Vec3.html">Vec3</A>&amp; from, const <!1><A HREF="Vec3.html">Vec3</A>&amp; to )</B></TT>
<DL><DT><DD></DL><P>
<A NAME="inverse"></A>
<A NAME="DOC.2.70.79"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> inverse( const <!1><A HREF="Matrix.html">Matrix</A>&amp; matrix)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="ortho"></A>
<A NAME="DOC.2.70.80"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> ortho(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="ortho2D"></A>
<A NAME="DOC.2.70.81"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> ortho2D(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="frustum"></A>
<A NAME="DOC.2.70.82"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> frustum(const double <!1><A HREF="Camera.html#DOC.2.25.18">left</A>, const double <!1><A HREF="Camera.html#DOC.2.25.19">right</A>, const double <!1><A HREF="Camera.html#DOC.2.25.20">bottom</A>, const double <!1><A HREF="Camera.html#DOC.2.25.21">top</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="perspective"></A>
<A NAME="DOC.2.70.83"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> perspective(const double fovy, const double <!1><A HREF="Viewport.html#DOC.2.140.12">aspectRatio</A>, const double <!1><A HREF="Camera.html#DOC.2.25.22">zNear</A>, const double <!1><A HREF="Camera.html#DOC.2.25.23">zFar</A>)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="lookAt"></A>
<A NAME="DOC.2.70.84"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Matrix.html">Matrix</A> lookAt(const <!1><A HREF="Vec3.html">Vec3</A>&amp; eye, const <!1><A HREF="Vec3.html">Vec3</A>&amp; <!1><A HREF="ConvexPlanerPolygon.html#DOC.2.32.3">center</A>, const <!1><A HREF="Vec3.html">Vec3</A>&amp; up)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="postMult"></A>
<A NAME="DOC.2.70.85"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Vec3.html">Vec3</A> postMult( const <!1><A HREF="Vec3.html">Vec3</A>&amp; v ) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="preMult"></A>
<A NAME="DOC.2.70.86"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Vec3.html">Vec3</A> preMult( const <!1><A HREF="Vec3.html">Vec3</A>&amp; v ) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="postMult"></A>
<A NAME="DOC.2.70.87"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Vec4.html">Vec4</A> postMult( const <!1><A HREF="Vec4.html">Vec4</A>&amp; v ) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="preMult"></A>
<A NAME="DOC.2.70.88"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Vec4.html">Vec4</A> preMult( const <!1><A HREF="Vec4.html">Vec4</A>&amp; v ) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="transform3x3"></A>
<A NAME="DOC.2.70.89"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Vec3.html">Vec3</A> transform3x3(const <!1><A HREF="Vec3.html">Vec3</A>&amp; v, const <!1><A HREF="Matrix.html">Matrix</A>&amp; m)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="transform3x3"></A>
<A NAME="DOC.2.70.90"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Vec3.html">Vec3</A> transform3x3(const <!1><A HREF="Matrix.html">Matrix</A>&amp; m, const <!1><A HREF="Vec3.html">Vec3</A>&amp; v)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="operator* "></A>
<A NAME="DOC.2.70.91"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Vec3.html">Vec3</A> operator* (const <!1><A HREF="Vec3.html">Vec3</A>&amp; v) const </B></TT>
<DL><DT><DD></DL><P>
<A NAME="operator* "></A>
<A NAME="DOC.2.70.92"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>inline   <!1><A HREF="Vec4.html">Vec4</A> operator* (const <!1><A HREF="Vec4.html">Vec4</A>&amp; v) const </B></TT>
<DL><DT><DD></DL><P></DL>

<HR><DL><DT><B>This class has no child classes.</B></DL>

<DL><DT><DD></DL><P><P><I><A HREF="index.html">Alphabetic index</A></I> <I><A HREF="HIER.html">HTML hierarchy of classes</A> or <A HREF="HIERjava.html">Java</A></I></P><HR>
<BR>
This page was generated with the help of <A HREF="http://docpp.sourceforge.net">DOC++</A>.
</BODY>
</HTML>
